#ifndef SIMPLE_SUPPORT_TYPE_TRAITS_IS_TEMPLATE_INSTANCE_HPP
#define SIMPLE_SUPPORT_TYPE_TRAITS_IS_TEMPLATE_INSTANCE_HPP

#include <type_traits> // std::true_type std::false_type

namespace simple::support
{

	template <template <typename...> typename, typename>
	struct is_template_instance : public std::false_type {};

	template <template <typename...> typename U, typename...Ts>
	struct is_template_instance<U, U<Ts...>> : public std::true_type {};

	template <template <typename...> typename U, typename T>
	constexpr auto is_template_instance_v = is_template_instance<U, T>::value;

} // namespace simple::support

#endif /* end of include guard */
